//控制消防装置的步进电机

#include "stm32f10x.h"   // Device header
#include "42bujin.h"
#include "Delay.h"
#include "OLED.h"
uint16_t maichong=1600;

void bujin_init()
{
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);
	GPIO_InitTypeDef gpio_init;
	gpio_init.GPIO_Mode=GPIO_Mode_Out_PP;
	gpio_init.GPIO_Pin=GPIO_Pin_4|GPIO_Pin_5|GPIO_Pin_6|GPIO_Pin_7|GPIO_Pin_8|GPIO_Pin_9|GPIO_Pin_10|GPIO_Pin_11;//5是模拟脉冲输出，4控制电机旋转方向，6控制电机使能
	gpio_init.GPIO_Speed=GPIO_Speed_50MHz;
	GPIO_Init(GPIOA,&gpio_init);
	GPIO_SetBits(GPIOA,GPIO_Pin_4);
	GPIO_SetBits(GPIOA,GPIO_Pin_5);
}
/*
fangxiang：1是逆时针旋转，2是顺时针旋转
count：让步进电机转动的圈数
*/

void bujin1_start(uint16_t fangxiang,uint16_t count)
{
	if(fangxiang==1){
		GPIO_SetBits(GPIOA,GPIO_Pin_4);//方向
		GPIO_SetBits(GPIOA,GPIO_Pin_6);
		for(int i=0;i<maichong*count;i++)//模仿pwm可以精准控制步进电机的旋转圈数
		{
			GPIO_SetBits(GPIOA,GPIO_Pin_5);//pwm
			GPIO_SetBits(GPIOA,GPIO_Pin_7);
			Delay_us(80);//更改间隔时间的值可以改变步进电机旋转的快慢
			GPIO_ResetBits(GPIOA,GPIO_Pin_5);
			GPIO_ResetBits(GPIOA,GPIO_Pin_7);
			Delay_us(80);
		}
	}else if(fangxiang==2){
		GPIO_ResetBits(GPIOA,GPIO_Pin_4);
		GPIO_ResetBits(GPIOA,GPIO_Pin_6);
		for(int i=0;i<maichong*count;i++)
		{
			GPIO_SetBits(GPIOA,GPIO_Pin_5);
			GPIO_SetBits(GPIOA,GPIO_Pin_7);
			Delay_us(80);
			GPIO_ResetBits(GPIOA,GPIO_Pin_5);
			GPIO_ResetBits(GPIOA,GPIO_Pin_7);
			Delay_us(80);
		}
	}

}

void bujin2_start(uint16_t fangxiang,uint16_t count)
{
	if(fangxiang==1){
		GPIO_SetBits(GPIOA,GPIO_Pin_8);
		GPIO_SetBits(GPIOA,GPIO_Pin_10);
		for(int i=0;i<maichong*count;i++)//模仿pwm可以精准控制步进电机的旋转圈数
		{
			GPIO_SetBits(GPIOA,GPIO_Pin_9);
			GPIO_SetBits(GPIOA,GPIO_Pin_11);
			Delay_us(100);//更改间隔时间的值可以改变步进电机旋转的快慢
			GPIO_ResetBits(GPIOA,GPIO_Pin_9);
			GPIO_ResetBits(GPIOA,GPIO_Pin_11);
			Delay_us(100);
		}
	}else if(fangxiang==2){
		GPIO_ResetBits(GPIOA,GPIO_Pin_8);
		GPIO_ResetBits(GPIOA,GPIO_Pin_10);
		for(int i=0;i<maichong*count;i++)
		{
			GPIO_SetBits(GPIOA,GPIO_Pin_9);
			GPIO_SetBits(GPIOA,GPIO_Pin_11);
			Delay_us(10);
			GPIO_ResetBits(GPIOA,GPIO_Pin_9);
			GPIO_ResetBits(GPIOA,GPIO_Pin_11);
			Delay_us(10);
		}
	}

}
